var requirePaths = {
    /**
     * underscore.js(现在还没有使用到，请先不要引入)
     */
    underscore: _reqConfig.debug ? 'underscore' : 'underscore.min',

    /**
     * zTree树形基本组件（不包含复选框）
     */
    zTree: _reqConfig.debug ? '../../../component/zTree/js/jquery.ztree.core-3.5' : '../../../component/zTree/js/jquery.ztree.core-3.5.min',
    /**
     * zTree树形复选框组件（界面中有需要用到树型复选框的直接引入此文件既可不需要额外再引入zTree）
     */
    zTreeCheckbox: _reqConfig.debug ? '../../../component/zTree/js/jquery.ztree.excheck-3.5' : '../../../component/zTree/js/jquery.ztree.excheck-3.5.min',
    /**
     * my97时间控件
     */
    date: '../../../component/My97DatePicker/WdatePicker',
    /**
     * jqueryUI核心文件
     * remark：现在开发人员不需要引入此文件
     */
    'jquery-ui': _reqConfig.debug ? '../../../component/jquery-ui/jquery-ui' : '../../../component/jquery-ui/jquery-ui',
    /**
     * 下拉框
     */
    select2: _reqConfig.debug ? '../../../component/select2/select2.src' : '../../../component/select2/select2',
    /**
     * 原生的jqGrid
     */
    jqGridBase: '../../../component/jquery.jqGrid/js/jquery.jqGrid.min',
    /**
     * 扩展后的jqGrid(现在全部是引入这个，不引入jqGridBase)
     */
    grid: '../widgets/grid',
    /**
     * 高德地图
     */
    gaodeMap: '../../../component/map/js/map-gaode',
    /**
     * 表单校验
     */
    validator: 'validator',
    /**
     * highcharts图表
     */
    highcharts: _reqConfig.debug ? '../../../component/highcharts/highcharts.src' : '../../../component/highcharts/highcharts',
    ajaxfileupload: 'ajaxfileupload',
    /**
     * 目前主要是用于类似车辆监控中显示车速、转速这样的数据，具体是以圆弧形式展现
     */
    gauge: '../../../component/highcharts/modules/solid-gauge',
    /**
     * highcharts图表额外的功能（不了解此文件功能的慎用）
     */
    'highcharts-more': '../../../component/highcharts/highcharts-more',
    /**
     * highcharts图表导入导出需要引入此本件
     */
    'highcharts-export': '../../../component/highcharts/modules/exporting',
    /**
     * remark：现在开发人员不需要引入此文件
     */
    leftlist: '../../../common/js/leftList',
    /**
     * 上传控件（flash）
     */
    uploadify: '../../../component/uploadify/jquery.uploadify.min',
    /**
     * remark：现在开发人员不需要引入此文件
     */
    treeDialog: '../../../common/js/treeDialog',
    /**
     * 百度echarts图表
     */
    echarts: '../../../component/echarts/echarts',
    echarts3: '../../../component/echarts3/echarts.min',
    swfobject: '../../../component/socketSwf/swfobject',
    /**
     * 监控组件
     */
    monitor: '../widgets/monitor',
    /**
     * js模版，主要作用是使用模块结合数据生成html
     */
    template: 'template.min',
    /**
     * remark：现在开发人员不需要引入此文件
     */
    dialog: '../widgets/dialog',
    /**
     * remark：有需要用到提交文件上传的才需要引入此文件
     */
    'jquery-form': 'jquery.form',
    /**
     * 界面顶部工具栏（用JS直接生成顶部工具栏）
     */
    topBar: '../widgets/topBar',
    /**
     * 简易Grid
     */
    canGrid: '../widgets/canGrid',
    /**
     * layout布局（界面中有使用到data-layout这个属性的才需要引入）
     */
    layout: '../widgets/layout',
    
    /**
     * 各首页公用函数(如获取查询条件，趋势图，表格等)
     */
    homePageTools: '../widgets/homePageTools',

    /**
     * 树状列表（功能角色分配表）
     */
    tableTree: '../widgets/tableTree'
};

/**
 * 各JS之间依赖关系的配置及JS对CSS文件依赖关系的配置
 *
 */
var requireShim = {
    underscore: {
        exports: '_'
    },
    zTree: {
        exports: 'zTree',
        deps: ['css!../../../component/zTree/css/zTreeStyle/zTreeStyle.css']
    },
    zTreeCheckbox: {
        exports: 'zTreeCheckbox',
        deps: ['zTree', 'css!../../../component/zTree/css/zTreeStyle/zTreeStyle.css']
    },
    'jquery-ui': {
        deps: ['css!../../../component/jquery-ui/css/jquery-ui.css']
    },
    select2: {
        deps: ['css!../../../component/select2/select2.css']
    },
    grid: {
        deps: ['jqGridBase', 'css!../../../component/jquery.jqGrid/css/ui.jqgrid.css']
    },
    gauge: {
        deps: ['highcharts', 'highcharts-more']
    },
    'highcharts-more': {
        deps: ['highcharts']
    },
    'highcharts-export': {
        deps: ['highcharts']
    },
    uploadify: {
        deps: ['css!../../../component/uploadify/uploadify.css']
    }
};

/**
 *用于自定义引入一些文件、CSS（扩展功能）
 */
(function () {
    function extend(obj1, obj2) {
        var prop;
        for (prop in obj2) {
            obj1[prop] = obj2[prop];
        }
    }

    extend(requirePaths, window['requireExtraPaths']);
    extend(requireShim, window['requireExtraShim']);
})();

/**
 *requirejs全局配置
 */
requirejs.config({
    urlArgs: _reqConfig.debug ? "v=" + (new Date()).getTime() : 'v=' + _reqConfig.version,
    waitSeconds: 0,
    /**
     * requirejs加载完成后执行的回调函数
     * eg. 1）可以用于界面初始化，界面中统一的方法名为pageInit
     * eg. 2) pageLoadJS界面中需要额外引用的JS数组
     */
    callback: function () {
        $(function () {
            if (typeof  window['pageInit'] === 'function') {
                window['pageInit']();
            } else if (requirePaths.extrance) {
                require(['extrance'], function () {
                    if (typeof  window['pageInit'] === 'function') {
                        window['pageInit']();
                    }
                });
            }
        });
    },
    paths: requirePaths,
    /**
     * js之间的依赖关系及所依赖的css
     */
    shim: requireShim
});